/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package slicer_20;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.JFrame;


/**
 * MyColorChooser är extendar JFrame och innehåller funktionalitet för att välja 
 * mellan olika färger genom att klicka på en bild som visar färgskalan,
 * vi kollar vilken pixel du klickat på och väljer dennas färg.
 * 
 * @author Mikael Köhlmyr | mikael@kohlmyr.com | http://www.kmyr.net
 */
public class MyColorChooser extends JFrame implements MouseListener{
    //public SlicerCanvas canvas;
    BufferedImage image;
    Color choice = Color.red;
    MyPanel parent;
    /**
     * Konstruktor. Vi tar emot panelen som äger colorchoosern som ett argument
     * för att kunna skicka tillbaka information.
     * Vi hämtar även här bilden på färgskalan.
     * @param parent
     */
    public MyColorChooser(MyPanel parent){
        super("Slicer_20 Colorchooser");
        this.parent = parent;
        setResizable(false);
        setVisible(true);
        //setModal(true);
        addMouseListener(this);
            try{
                URL myurl = this.getClass().getResource("hsb.jpg");
                image = ImageIO.read(myurl);
            }
            catch(IOException e){
            }
        setBounds(0,0,image.getWidth(), image.getHeight()+23);
    }
    
    /**
     * Paint. Målar bilden vi hämtat.
     * @param g
     */
    @Override
    public void paint(Graphics g){
        if(image != null){
            //System.out.println("inpaint");
            //System.out.println(isFocused());
            g.drawImage(image, 0 , 23, this);
        }
    }

    /**
     * En eventlistener som ligger på mouseClicked för att se om man valt en färg.
     * @param e
     */
    public void mouseClicked(MouseEvent e) {
        choice = new Color(image.getRGB(e.getX(), e.getY()));
        if(parent.active != -1){
            parent.notifyChoice();
        }
        
    }
    
    /**
    * Även denna eventlistenern ser efter ifall man valt en färg.
    * @param e
    */
    public void mousePressed(MouseEvent e) {
        choice = new Color(image.getRGB(e.getX(), e.getY()));
        if(parent.active != -1){
            parent.notifyChoice();
        }
    }
    
    /**
    * Även denna eventlistenern ser efter ifall man valt en färg.
    * @param e
    */
    public void mouseReleased(MouseEvent e) {
        choice = new Color(image.getRGB(e.getX(), e.getY()));
        if(parent.active != -1){
            parent.notifyChoice();
        }
    }

    public void mouseEntered(MouseEvent e) {
        //throw new UnsupportedOperationException("Not supported yet.");
    }

    public void mouseExited(MouseEvent e) {
        //throw new UnsupportedOperationException("Not supported yet.");
    }
}
